﻿#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>


//void Left_turn(char* ch, int k)
//{
//	char* left = ch;
//	char* right = ch + strlen(ch) - 1;
//	for (int i = 0; i <= k; i++)
//	{
//		char tem = *left;
//		*left = *right;
//		*right = tem;
//		left++;
//		right--;
//	}
//}
//int main()
//{
//	//创建一个字符
//	char ch[] = "ABCD";
//
//	//输入左旋的字符数
//	int k = 0;
//	scanf("%d", &k);
//	
//	//进行左旋操作（无返回)
//	Left_turn(ch, k);
//	//输出字符串
//	printf("%s",ch);
//
//	return 0;
//}


//#include <stdio.h>
//int main()
//{
//    int arr[] = { 1,2,3,4,5 };
//    short* p = (short*)arr;
//    int i = 0;
//    for (i = 0; i < 4; i++)
//    {
//        *(p + i) = 0;
//    }
//
//    for (i = 0; i < 5; i++)
//    {
//        printf("%d ", arr[i]);
//    }
//    return 0;
//}


////使用指针打印数组
//int main()
//{
//	//创建一个数组
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int* p = arr;//arr是arr首地址 - &arr代指整个数组
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	int i = 0;
//	for (i = 0; i < sz; i++)
//	{
//		printf("%d ", *(p + i));
//	}
//	return 0;
//}


////实现一个对整形数组的冒泡排序
//void Bubble_sort(int arr[], int sz)
//{
//	int i = 0;
//	for (i = 0; i < sz - 1; i++)
//	{
//		int flag = 1;
//		int j = 0;
//		for (j = 0; j < sz - i - 1; j++)
//		{
//			if (arr[j] > arr[j + 1])
//			{
//				flag = 0;
//				int tmp = arr[j];
//				arr[j] = arr[j + 1];
//				arr[j + 1] = tmp;
//			}
//		}
//		if (flag == 1)
//			break;
//	}
//}
//int main()
//{
//	int arr[10] = { 10,5,2,4,6,9,7,3,8,1 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
////排序前
//	int i = 0;
//	for(i = 0; i < sz; i++)
//		{
//		printf("%d ", arr[i]);
//		}
//	printf("\n");
////排序后
//	Bubble_sort(arr, sz);
//	int j = 0;
//	for (j = 0; j < sz; j++)
//	{
//		printf("%d ", arr[j]);
//	}
//	return 0;
//}



////模拟实现库函数strlen
//#include <assert.h>
//int my_strlen(const char* arr)
//{
//	int count = 0;
//	assert(arr);
//	while (*arr)
//	{
//		count++;
//		arr++;
//	}
//	return count;
//}
//
//int main()
//{
//	char arr[] = "abcdefg";
//	int sz = my_strlen(arr);
//	printf("%d", sz);
//	return 0;
//}

//	while (left < right)
//	{
//		// 从前往后，找到一个偶数，找到后停止
//		while ((left < right) && (arr[left] % 2 == 1))
//		{
//			left++;
//		}
//
//		// 从后往前找，找一个奇数，找到后停止
//		while ((left < right) && (arr[right] % 2 == 0))
//		{
//			right--;
//		}
//
//		// 如果偶数和奇数都找到，交换这两个数据的位置
//		// 然后继续找，直到两个指针相遇
//		if (left < right)
//		{
//			tmp = arr[left];
//			arr[left] = arr[right];
//			arr[right] = tmp;
//		}
//	}
//}
// 
//调整数组使奇数全部都位于偶数前面。
//void change_number(int arr[], int sz)
//{
//	int left = 0;
//	int right = sz - 1;
//	int tmp = 0;
//	while (left < right)
//	{
//		//寻找奇数
//		while ((left < right) && (arr[left] % 2 == 1))
//		{
//			left++;
//		}
//		//寻找偶数
//		while ((left < right) && (arr[right] % 2 == 0))
//		{
//			right--;
//		}
//		//交换两数
//		if (left < right)
//		{
//			tmp = arr[left];
//			arr[left] = arr[right];
//			arr[right] = tmp;
//		}
//	}
//}
//int main()
//{
//	int arr[10] = {1,2,3,4,5,6,7,8,9,10};
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	printf("交换前：");
//	for (int i = 0; i < sz; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//	printf("\n");
//	void change_number(arr, sz);
//	printf("交换后：");
//	for (int j = 0; j < sz; j++)
//	{
//		printf("%d ", arr[j]);
//	}
//	return 0;
//}



//结构体
//C语言中有许多内置类型如：int double float 等等
//结构是⼀些值的集合，这些值称为成员变量。结构的每个成员可以是不同类型的变量，如：
//标量、数组、指针，甚⾄是其他结构体


//结构的声明
// struct anx
// {
//		member-list;
// }variable-list;
// 
// 
//描述一个学生的信息
//变量的定义
//struct student
//{
//	char name[1000];//名字
//	int age;//年龄
//	char sex[100];//性别
//	char id[500];//学号
//};
//
////初始化
////		（int)     a = 0;
////(struct student) p ={"卢智博",20,'男',"2023090640127"};
//
//int main()
//{
//	struct student p = { .name="卢智博",.sex='man',.id="20230906",.age=20};
//	printf("姓名：%s  年龄：%d 性别:%s  学号：%s", p.name, p.age,p.sex, p.id);
//	return 0;
//}



////实现一个函数，可以左旋字符串中的k个字符
//void Left_turn(char* ch, int n)
//{
//	int right = 0;
//	int i = 0;
//	int len = strlen(ch);
//	char ret;
//	while (n)
//	{
//		ret = ch[0];
//		for (i = 0; i < len; i++)
//		{
//			if (4 == i)
//			{
//				ch[i] = ret;
//			}
//			if (i <= 3)
//			{
//				ch[i] = ch[i + 1];
//			}
//		}
//		n--;
//	}
//}
//
//int main()
//{
//	char ch[] = "ABCDE";
//	int n = 0;
//	scanf("%d", &n);
//	Left_turn(ch, n);
//	printf("%s", ch);
//	return 0;
//}